﻿using System;
using System.Collections.Generic;
using System.Runtime.Serialization;
using Sinacor.Servico.Bovespa.Ordens.Service.DataContract.Enum;
using Sinacor.Servico.Bovespa.Ordens.Service.DataContract.Response;
using Sinacor.Servico.Bovespa.Ordens.BusinessEntity.Enum;

namespace Sinacor.Servico.Bovespa.Ordens.Service.DataContract.Response
{
    [DataContract(Namespace = "http://www.bovespa.com.br/Sinacor.Servico.Bovespa.Ordens.Service.DataContract.Response")]
    public class LoteDigitacaoResponse
    {
        #region Private
        private string _ApelidoCliente;
        /// <summary>
        /// Agente de Custódia/Usuário Institucional
        /// </summary>
        private string _CodigoAgenteCustodia;
        private int? _CodigoCarteira;
        private int? _CodigoCliente;
        /// <summary>
        /// Cliente no Agente de Custódia/Usuário Institucional
        /// </summary>
        private int? _CodigoClienteCustodia;
        /// <summary>
        /// Dígito do Cliente no Agente de Custódia/Usuário Institucional
        /// </summary>
        private int? _DigitoClienteCustodia;
        private int? _DigitoVerificadorCliente;
        private string _IndicadorNaoLiquidacao;
        private string _IndicadorSistemaExterno;
        private Int64? _NumeroConjunto;
        private Int64? _NumeroSequenciaDigitacao;
        private decimal? _PercentualAcrescimo;
        private decimal? _PercentualDistribuido;
        private decimal? _PrecoInformado;
        private decimal? _QuantidadeDestinadaCliente;
        /// <summary>
        /// Situação do cliente ( 'A'tivo ou 'D'esativado )
        /// </summary>
        private string _SituacaoCliente;
        private DataContract.Enum.TipoLiquidacaoDistribuicao? _TipoLiquidacao;
        private decimal? _ValorDolar;
        private bool? _UtilizaContaInvestimento;
        private Sinacor.Servico.Bovespa.Ordens.Service.DataContract.Enum.TipoDistribuicao? _TipoDistribuicao;

        private System.DateTime? _DataMovimento;
        #endregion
        
        #region Propriedades
        [DataMember(IsRequired = false)]
        public string ApelidoCliente
        {
            get
            {
                return _ApelidoCliente;
            }
            set
            {
                _ApelidoCliente = value;
            }
        }

        [DataMember(IsRequired = false)]
        public string CodigoAgenteCustodia
        {
            get
            {
                return _CodigoAgenteCustodia;
            }
            set
            {
                _CodigoAgenteCustodia = value;
            }
        }

        [DataMember(IsRequired = false)]
        public int? CodigoCarteira
        {
            get
            {
                return _CodigoCarteira;
            }
            set
            {
                _CodigoCarteira = value;
            }
        }

        [DataMember(IsRequired = false)]
        public int? CodigoCliente
        {
            get
            {
                return _CodigoCliente;
            }
            set
            {
                _CodigoCliente = value;
            }
        }

        [DataMember(IsRequired = false)]
        public int? CodigoClienteCustodia
        {
            get
            {
                return _CodigoClienteCustodia;
            }
            set
            {
                _CodigoClienteCustodia = value;
            }
        }

        [DataMember(IsRequired = false)]
        public DateTime? DataMovimento
        {
            get
            {
                return _DataMovimento;
            }
            set
            {
                _DataMovimento = value;
            }
        }

        [DataMember(IsRequired = false)]
        public int? DigitoClienteCustodia
        {
            get
            {
                return _DigitoClienteCustodia;
            }
            set
            {
                _DigitoClienteCustodia = value;
            }
        }

        [DataMember(IsRequired = false)]
        public int? DigitoVerificadorCliente
        {
            get
            {
                return _DigitoVerificadorCliente;
            }
            set
            {
                _DigitoVerificadorCliente = value;
            }
        }

        [DataMember(IsRequired = false)]
        public string IndicadorNaoLiquidacao
        {
            get
            {
                return _IndicadorNaoLiquidacao;
            }
            set
            {
                _IndicadorNaoLiquidacao = value;
            }
        }

        [DataMember(IsRequired = false)]
        public string IndicadorSistemaExterno
        {
            get
            {
                return _IndicadorSistemaExterno;
            }
            set
            {
                _IndicadorSistemaExterno = value;
            }
        }

        [DataMember(IsRequired = false)]
        public Int64? NumeroConjunto
        {
            get
            {
                return _NumeroConjunto;
            }
            set
            {
                _NumeroConjunto = value;
            }
        }

        [DataMember(IsRequired = false)]
        public Int64? NumeroSequenciaDigitacao
        {
            get
            {
                return _NumeroSequenciaDigitacao;
            }
            set
            {
                _NumeroSequenciaDigitacao = value;
            }
        }

        [DataMember(IsRequired = false)]
        public decimal? PercentualAcrescimo
        {
            get
            {
                return _PercentualAcrescimo;
            }
            set
            {
                _PercentualAcrescimo = value;
            }
        }

        [DataMember(IsRequired = false)]
        public decimal? PercentualDistribuido
        {
            get
            {
                return _PercentualDistribuido;
            }
            set
            {
                _PercentualDistribuido = value;
            }
        }

        [DataMember(IsRequired = false)]
        public decimal? PrecoInformado
        {
            get
            {
                return _PrecoInformado;
            }
            set
            {
                _PrecoInformado = value;
            }
        }

        [DataMember(IsRequired = false)]
        public decimal? QuantidadeDestinadaCliente
        {
            get
            {
                return _QuantidadeDestinadaCliente;
            }
            set
            {
                _QuantidadeDestinadaCliente = value;
            }
        }
        /// <summary>
        /// Situação do cliente ( 'A'tivo ou 'D'esativado )
        /// </summary>
        /// 
        [DataMember(IsRequired = false)]
        public string SituacaoCliente
        {
            get
            {
                return _SituacaoCliente;
            }
            set
            {
                _SituacaoCliente = value;
            }
        }

        [DataMember(IsRequired = false)]
        public Sinacor.Servico.Bovespa.Ordens.Service.DataContract.Enum.TipoDistribuicao? TipoDistribuicao
        {
            get
            {
                return _TipoDistribuicao;
            }
            set
            {
                _TipoDistribuicao = value;
            }
        }

        [DataMember(IsRequired = false)]
        public DataContract.Enum.TipoLiquidacaoDistribuicao? TipoLiquidacao
        {
            get
            {
                return _TipoLiquidacao;
            }
            set
            {
                _TipoLiquidacao = value;
            }
        }

        [DataMember(IsRequired = false)]
        public decimal? ValorDolar
        {
            get
            {
                return _ValorDolar;
            }
            set
            {
                _ValorDolar = value;
            }
        }

        [DataMember(IsRequired = false)]
        public bool? UtilizaContaInvestimento
        {
            get { return _UtilizaContaInvestimento; }
            set { _UtilizaContaInvestimento = value; }
        }

        #endregion        
    }
}
